home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / sbin / autodep < prev    next >
Text File  |  2009-11-03  |  4KB  |  125 lines

  1. #!/usr/bin/perl
  2. #
  3. # $Id: autodep 612 2007-04-25 22:06:52Z DominicReynolds_ $
  4. #
  5. # ----------------------------------------------------------------------
  6. #    Copyright (c) 2005 Novell, Inc. All Rights Reserved.
  7. #
  8. #    This program is free software; you can redistribute it and/or
  9. #    modify it under the terms of version 2 of the GNU General Public
  10. #    License as published by the Free Software Foundation.
  11. #
  12. #    This program is distributed in the hope that it will be useful,
  13. #    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. #    GNU General Public License for more details.
  16. #
  17. #    You should have received a copy of the GNU General Public License
  18. #    along with this program; if not, contact Novell, Inc.
  19. #
  20. #    To contact Novell about this file by physical or electronic mail,
  21. #    you may find current contact information at www.novell.com.
  22. # ----------------------------------------------------------------------
  23.  
  24. use strict;
  25. use FindBin;
  26. use Getopt::Long;
  27.  
  28. use Immunix::SubDomain;
  29.  
  30. use Data::Dumper;
  31.  
  32. use Locale::gettext;
  33. use POSIX;
  34.  
  35. # force $PATH to be sane
  36. $ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin";
  37.  
  38. # initialize the local poo
  39. setlocale(LC_MESSAGES, "");
  40. textdomain("apparmor-utils");
  41.  
  42. $UI_Mode = "text";
  43.  
  44. # options variables
  45. my $help  = '';
  46. my $force = undef;
  47.  
  48. GetOptions(
  49.     'force'   => \$force,
  50.     'dir|d=s' => \$profiledir,
  51.     'help|h'  => \$help,
  52. );
  53.  
  54. # tell 'em how to use it...
  55. &usage && exit if $help;
  56.  
  57. my $sd_mountpoint = check_for_subdomain();
  58.  
  59. # let's convert it to full path...
  60. $profiledir = get_full_path($profiledir);
  61.  
  62. unless (-d $profiledir) {
  63.     UI_Important(sprintf(gettext('Can\'t find subdomain profiles in %s.'), $profiledir));
  64.     exit 1;
  65. }
  66.  
  67. # what are we profiling?
  68. my @profiling = @ARGV;
  69.  
  70. unless (@profiling) {
  71.     @profiling = (UI_GetString(gettext("Please enter the program to create a profile for: "), ""));
  72. }
  73.  
  74. for my $profiling (@profiling) {
  75.  
  76.     next unless $profiling;
  77.  
  78.     my $fqdbin;
  79.     if (-e $profiling) {
  80.         $fqdbin = get_full_path($profiling);
  81.         chomp($fqdbin);
  82.     } else {
  83.         if ($profiling !~ /\//) {
  84.             my $which = which($profiling);
  85.             if ($which) {
  86.                 $fqdbin = get_full_path($which);
  87.             }
  88.         }
  89.     }
  90.  
  91.     # make sure that the app they're requesting to profile is not marked as
  92.     # not allowed to have it's own profile
  93.     if ($qualifiers{$fqdbin}) {
  94.         unless ($qualifiers{$fqdbin} =~ /p/) {
  95.             UI_Info(sprintf(gettext('%s is currently marked as a program that should not have it\'s own profile.  Usually, programs are marked this way if creating a profile for them is likely to break the rest of the system.  If you know what you\'re doing and are certain you want to create a profile for this program, edit the corresponding entry in the [qualifiers] section in /etc/apparmor/logprof.conf.'), $fqdbin));
  96.             exit 1;
  97.         }
  98.     }
  99.  
  100.     if (-e $fqdbin) {
  101.         if (-e getprofilefilename($fqdbin) && !$force) {
  102.             UI_Info(sprintf(gettext('Profile for %s already exists - skipping.'), $fqdbin));
  103.         } else {
  104.             autodep($fqdbin);
  105.             reload($fqdbin) if $sd_mountpoint;
  106.         }
  107.     } else {
  108.         if ($profiling =~ /^[^\/]+$/) {
  109.             UI_Info(sprintf(gettext('Can\'t find %s in the system path list.  If the name of the application is correct, please run \'which %s\' as a user with the correct PATH environment set up in order to find the fully-qualified path.'), $profiling, $profiling));
  110.             exit 1;
  111.         } else {
  112.             UI_Info(sprintf(gettext('%s does not exist, please double-check the path.') . $profiling));
  113.             exit 1;
  114.         }
  115.     }
  116. }
  117.  
  118. exit 0;
  119.  
  120. sub usage {
  121.     UI_Info("usage: $0 [ --force ] [ -d /path/to/profiles ]");
  122.     exit 0;
  123. }
  124.  
  125.